
package br.com.aeternu.controleatendimento.common.ui;

import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import javax.swing.AbstractAction;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.KeyStroke;
import br.com.aeternu.controleatendimento.common.ifc.IfcMensagemUsuario;

public abstract class EasyJFrame extends JFrame
{

   private static final long serialVersionUID = -6051789716729062820L;

   public EasyJFrame()
   {
      this("");
   }

   public EasyJFrame(String title)
   {
      super(title.trim() + (!title.trim().equals("") ? " - " + IfcMensagemUsuario.INFO_SOBRE : ""));

      // setIconImage(IconUtil.IMAGEM_ATIVO);

      // Quando a tecla ESC for pressionada, fecha a janela
      getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "Sair");

      getRootPane().getActionMap().put("Sair", new ActionSair());

      // Ao fechar a janela pelo "X", trata como cancelamento da operação
      setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

      addWindowListener(new WindowAdapter()
      {

         public void windowClosing(java.awt.event.WindowEvent evt)
         {
            sair();
         }
      });
   }

   /**
    * Acionado quando a tela é fechada pelo pressionamento da tecla ESC ou fechamento pelo botão "X".
    */
   public abstract void sair();

   public class ActionSair extends AbstractAction
   {

      private static final long serialVersionUID = 1L;

      public ActionSair()
      {
         putValue(NAME, "Sair");
         putValue(SHORT_DESCRIPTION, "Finaliza a operação");
         putValue(MNEMONIC_KEY, KeyEvent.VK_R);
      }

      public void actionPerformed(ActionEvent e)
      {
         sair();
      }
   }
}
